package com.neusoft.hifly.attachment.file.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.neusoft.hifly.attachment.file.entity.FileObj;

/**
 * Title: 附件服务
 * <p>
 * Description: 附件_附件表 Dao
 * <p>
 * Copyright: 2019
 * <p>
 * Company: 东软汉枫
 *
 * @author lh_neu
 * @version 1.0.0
 */
@Mapper
public interface IFileDao extends BaseMapper<FileObj> {

	/**
	 * 删除对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param logicId
	 *            对象ID
	 */
	void deleteByLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("logicId") long logicId);

	/**
	 * 删除对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param objLogicId
	 *            关联ID
	 */
	void deleteByObjLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("objLogicId") long objLogicId);

	/**
	 * 根据id查询对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param logicId
	 *            id
	 * @return 对象
	 */
	FileObj getByLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("logicId") long logicId);

	/**
	 * 统计所有
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户ID
	 * @return 数量
	 */
	int countAll(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId);

	/**
	 * 查询所有对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @return 对象集合
	 */
	List<FileObj> findAll(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId);

	/**
	 * 查询所有对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param oldFileName
	 *            原文件名
	 * @param fileType
	 *            附件类型
	 * @param fileLength
	 *            文件长度
	 * @return 对象集合
	 */
	List<FileObj> findByNameTypeLength(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("oldFileName") String oldFileName, @Param("fileType") String fileType,
			@Param("fileLength") double fileLength);

	/**
	 * 查询关联类型和主表ID为条件的记录
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param objType
	 *            关联类型
	 * @param objLogicId
	 *            关联ID
	 * @param orderBy
	 *            自定义排序
	 * @return 返回附件列表
	 */
	List<FileObj> findByObjTypeAndObjLogicId(@Param("organCode") String organCode,
			@Param("organLogicId") long organLogicId, @Param("objType") String objType,
			@Param("objLogicId") long objLogicId, @Param("orderBy") String orderBy);

	/**
	 * 查询关联类型和主表ID为条件的记录
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param objLogicId
	 *            关联ID
	 * @param orderBy
	 *            自定义排序
	 * @return 返回附件列表
	 */
	List<FileObj> findByObjLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("objLogicId") long objLogicId, @Param("orderBy") String orderBy);
}